package com.lagou.mr.wc;


import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapred.JobConf;
import org.apache.hadoop.mapred.OutputCollector;
import org.apache.hadoop.mapred.Reporter;
import org.apache.hadoop.mapreduce.Mapper;

import java.io.IOException;

/**
 * 需求：单词计数
 * mapper类的范型参数：共4个，两对k v
 * 第一队：map的输入参数类型
 * 第二队：map的输出参数类型
 * LongWritable 文本偏移量 一行文本内容
 * Text, IntWritable  单词 1
 */
public class WordCountMapper extends Mapper<LongWritable, Text,Text, IntWritable> {


    /*
    LongWritable 文本偏移量 一行文本内容 map的输入参数类型
    单词 1  map的输出参数类型
     */

    //提升为全局变量，避免每次执行map方法，都要执行一次
    Text word = new Text();
    IntWritable one = new IntWritable(1);

    @Override
    public void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
        
        //接收文本内容，转为String类型
        String str = value.toString();
        //按照空格进行切分
        String[] words = str.split(" ");

        //输出单词  1
        for (String s : words) {
            word.set(s);
            context.write(word,one);
        }
    }
}
